package br.edu.univas.jobmanager.controller;

import java.util.List;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import br.edu.univas.jobmanager.dao.CategoriaDAO;
import br.edu.univas.jobmanager.dao.EstadoDAO;
import br.edu.univas.jobmanager.dao.TarefaDAO;
import br.edu.univas.jobmanager.entity.Categoria;
import br.edu.univas.jobmanager.entity.Estado;
import br.edu.univas.jobmanager.entity.Tarefa;
import br.edu.univas.jobmanager.exception.ObjectNotFoundException;
import br.edu.univas.jobmanager.listener.ButtonListener;

public class ControllerAdicionarTarefa {

	private CategoriaDAO _daoCategoria;
	private TarefaDAO _daoTarefa;
	private EstadoDAO _daoEstado;
	private ButtonListener frame;

	private ControllerPrincipal _controller;

	public ControllerAdicionarTarefa(ButtonListener frame,
			ControllerPrincipal _controller) {
		_daoCategoria = new CategoriaDAO();
		_daoTarefa = new TarefaDAO();
		_daoEstado = new EstadoDAO();
		this._controller = _controller;
		this.frame = frame;
	}

	public ButtonListener getButtonsListener() {
		return new ButtonListener() {

			@Override
			public void limparAction() {
				frame.limparAction();
			}

			public void gravarAction() {
				frame.gravarAction();
				_controller.cleanFramePrincipal();
				_controller.refreshTable(_daoTarefa
						.getTarefasAbertasEPendentes());

			}

			@Override
			public void atualizarAction() {
				// TODO Auto-generated method stub
				
			}
		};
	}
	
	public ButtonListener getButtonAlterarListener(){
		//Listener para editar tarefa;
		return new ButtonListener() {
			
			@Override
			public void limparAction() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void gravarAction() {
				frame.atualizarAction();
				_controller.cleanFramePrincipal();
				_controller.refreshTable(_daoTarefa.getTarefasAbertasEPendentes());
			}

			@Override
			public void atualizarAction() {
				// TODO Auto-generated method stub
				
			}
		};
	}

	public ComboBoxModel getBoxModel() {
		DefaultComboBoxModel model = new DefaultComboBoxModel();
		List<Categoria> categorias = _daoCategoria.findAll();
		for (Categoria categoria : categorias) {
			model.addElement(categoria);
		}
		return model;

	}

	public Estado getAbertoEstado() throws ObjectNotFoundException {
		return _daoEstado.findByPK(1);

	}

	public void insereTarefa(Tarefa tarefa) {
		_daoTarefa.insert(tarefa);

	}

	public void atualizaTarefa(Tarefa tarefa) {
		_daoTarefa.update(tarefa);
		
	}

}
